#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2,os
from __init__ import  FConfig

def getStreams():
    """
    recupere une liste de tuple (num, nom chaine, stream) directement sur la freebox
    """
    list = []
    chaine = None
    num=None

    try:
        liste = urllib2.urlopen("http://mafreebox.freebox.fr/freeboxtv/playlist.m3u")
    except:
        liste = open(os.path.join(FConfig.DATADIR,"nondegroupe.m3u"),"r")


    for i in liste:
        ligne = i.strip()
        if ligne:
            if chaine:
                list.append( (num,chaine,ligne) )
                chaine=None
            if ligne[:7]=="#EXTINF":
                line=ligne.split(" - ")
                chaine = line[-1]
                num=int(line[0].split(",")[-1])

    return list

def convChaine(fchaine):
    """ convertit une chaine freebox en chaine *progTV* (chaine du grabber tv_grab_fr)
    """
    fchaine=fchaine.lower().strip()
    if fchaine[:8]=="france 3":
        #permet de mapper toutes les fr3
        return "france3"
    else:
        t={
            "rtl9"              :u'rtl9',
            "ab 1"              :u'ab1',
            "tv5"               :u'tv5',
            "mtv france"        :u'mtv',
            "france 2"          :u'france2',
            "france 4"          :u'france4',
            "arte"              :u'arte',
            "arte allemand"     :u'arte',
            "france 5"          :u'france5',
        }
        if fchaine in t.keys():
            #utilise le dictionnaire de mappage plus haut
            return t[fchaine]
        else:
            #retourne la chaine freebox en minuscule ! (ca marche pour "arte", par ex)
            return fchaine

if __name__ == "__main__":
    os.chdir("..")
    l=getStreams()
    assert len(l)>0
    assert convChaine("France 3 Picardie") == "france3"
    assert convChaine("France 4") == "france4"
    assert convChaine(" ABCDEF ") == "abcdef"
